package org.example.mqstream.helloworld;

import com.rabbitmq.stream.*;

import java.io.IOException;

public class Send {

    /**
     * 主程序入口
     * 该程序演示了如何创建和使用一个消息生产者
     * 它首先配置环境，创建一个流，然后使用生产者发送一条消息
     *
     * @param args 命令行参数
     * @throws IOException 如果输入输出操作失败
     */
    public static void main(String[] args) throws IOException {
        // 构建连接远程消息队列环境
        Environment environment = Environment.builder()
                .host("192.168.0.228")  // 指定远程服务器IP
                .port(5552)              // 可选：指定流端口，默认是5552
                .username("mq")
                .password("123456")
                .build();

        // 定义流的名称
        String stream = "hello-java-stream";
        // 创建流，指定最大长度为5GB
        environment.streamCreator().stream(stream).maxLengthBytes(ByteCapacity.GB(5)).create();

        // 构建并创建一个生产者，用于向之前创建的流中发送消息
        Producer producer = environment.producerBuilder().stream(stream).build();
        // 发送一条包含"Hello, World!"的消息
        producer.send(producer.messageBuilder().addData("Hello, World!".getBytes()).build(), null);
        System.out.println(" [x] 'Hello, World!' message sent");

        // 等待用户按下回车键后再关闭生产者和环境，以防止程序自动结束
        System.out.println(" [x] Press enter to close the producer...");
        System.in.read();
        // 关闭生产者
        producer.close();
        // 关闭环境
        environment.close();
    }

}
